import axios from 'axios'
import request from '@/utils/request'
import { ElMessage } from 'element-plus' // 导入Element Plus消息组件

// 创建Axios实例
const service = axios.create({
  timeout: 5000  // 请求超时时间
})

// 请求拦截器 - 全局添加token
service.interceptors.request.use(
  config => {
    // 从localStorage获取token
    const token = localStorage.getItem('token')
    
    // 如果token存在，则添加到请求头
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  error => {
    // 请求错误处理
    return Promise.reject(error)
  }
)

// 响应拦截器 - 统一处理响应
service.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    // 处理401未授权错误
    if (error.response && error.response.status === 401) {
      // 显示友好提示
      ElMessage.warning('登录状态已过期，请重新登录')
      // 清除本地存储
      localStorage.removeItem('isLoggedIn')
      localStorage.removeItem('token')
      localStorage.removeItem('userInfo')
      // 添加延迟确保用户看到提示
      setTimeout(() => {
        // 检查当前是否已经在登录页面，如果不是则跳转
        if (window.location.pathname !== '/login') {
          window.location.href = '/login'
        }
      }, 2000)
    }
    return Promise.reject(error)
  }
)

export default service